package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectionQuery {
	// 외부에서는 객체 생성 금지하고 , instance 를 가져다 써라~ 이런것들을 싱글 톤이라고 한다 . 유명함.
	private static ConnectionQuery instance = new ConnectionQuery();
	public ConnectionQuery() {} //생성자
		public static ConnectionQuery getInstance() { 
			return instance;
		}
		public Connection getConnection() {	//ORCLE 연결하기	
			//-------------------------------------------------------------------------------------
			Connection conn = null;//접속 정보 , 
							//프로토콜 :서브프로토콜     : 호스트명    : 포트 : SID
			String url = "jdbc:oracle:thin:@localhost:1521:orcl"; 
			String user = "scott";			//접속  iD
			String password = "tiger";		//접속 비밀번호
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver"); //드라이버를 로딩한다.
				try {
					conn = DriverManager.getConnection(url, user, password); //DB에 접속한다.	
				} catch (SQLException e) {
					System.out.println("접속 에러");
				}
			} catch (ClassNotFoundException e) {
				System.out.println("접속 에러");
			}
			return conn;
		}
		public void close(Connection conn,Statement stmt , ResultSet rs){ //종료하는 기능을 가진 메소드
			try { //접속을 다했으면 종료하여라. 
				if(conn != null ) conn.close();	//conn 이 null이 아니면 ! 종료
				if(stmt != null ) conn.close(); //stmt 가 null이 아니면 ! 종료
				if(rs   != null ) conn.close();	//rs가 null이 아니면 종료
			} catch (SQLException e) {
				e.printStackTrace();
			}	
		}
		public static ResultSet query(Connection conn,Statement stmt , String sql){
			ResultSet rs = null;
			try {
				stmt = conn.createStatement();
				rs = stmt.executeQuery(sql);
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return rs;
		}
}